package com.example.java8.feature_05;

import java.util.Arrays;

public class TestUseLambdaArrays {

	public static void main(String[] args){
		
		String[] strs1 = new String[] {"deleerhai", "huangxiaohei", "tongtong", "hello", "baby"};
		/*
		 * 这里Lambda表达式的目标类型是Comparator，该Comparator指定了判断字符串大小的标准：
		 * 字符串越长，即可认为该字符串越大。
		 * */
		Arrays.parallelSort(strs1, (o1, o2) -> o1.length() - o2.length());
		System.out.println(Arrays.toString(strs1));
		
		int[] arr = new int[]{3, -4, 25, 16, 30, 18};
		/*
		 * 这里Lambda表达式的目标类型是IntBinaryOperator，该对象将会根据前后两个元素
		 * 来计算当前元素的值
		 * left代表数组中前一个索引处的元素，计算第一个元素时，left为1
		 * right代表数组中当前索引处的元素
		 * */
		Arrays.parallelPrefix(arr, (left, right) -> left * right);
		System.out.println(Arrays.toString(arr));
		
		
		long[] arr2 = new long[5];
		/*
		 * 这里Lambda表达式的目标类型是IntToLongFunction，该对象将会根据
		 * 元素的索引来计算当前元素的值。
		 * operand代表正在计算的元素索引
		 * */
		Arrays.parallelSetAll(arr2, operand -> operand * 5);
		System.out.println(Arrays.toString(arr2));
	}
	
}
